Calculate clusters using hierarchical clustering methodΒΆ

Calculate clusters using hierarchical clustering method.
Expected output:
Input number of points: 2
Input point (eg. 1,1)A: 1,2
Input point (eg. 1,1)B: 3,4
Distance matrix no 1:
[0.0, 2.83]
[2.83, 0.0]
Cluster is: [AB]
import math

def distance(a, b):
    x = float(a[0]) - float(b[0])
    x= x * x
    y = float(a[1]) - float(b[1])
    y = y * y
    dist = round(math.sqrt(x + y),2)
    return dist

def minimum(matrix):
    p = [0,0]
    mn = 1000
    for i in range(0, len(matrix)):
        for j in range(0, len(matrix[i])):
            if (matrix[i][j] > 0 and matrix[i][j] < mn):
                mn = matrix[i][j]
                p[0] = i
                p[1] = j
    return p

def newpoint(pt):
    x = float(pt[0][0]) + float(pt[1][0])
    x = x/2
    y = float(pt[0][1]) + float(pt[1][1])
    y = y/2
    midpoint = [x, y]
    return midpoint

if __name__ == '__main__':

    n = int(input("Input number of points: "))
    points = list()
    outline = '['
    i = 0

    while(i < n):
        s = input("Input point (eg. 1,1)" + chr(65 + i) + ": ")
        c = s.split(",")
        points.append(c)
        i = i + 1

    names={}

    for i in range(0, len(points)):
        names[str(points[i])] = chr(65 + i)

    l = 0
    while(len(points) > 1):
        l = l + 1
        matrix = list()
        print('Distance matrix no. ' + str(l) + ': ')
        for i in range(0, len(points)):
            m = []
            for j in range(0, len(points)):
                m.append(0)
            for j in range(0, len(points)):
                m[j] = distance(points[i], points[j])
            print(str(m))
            matrix.append(m)

        m = minimum(matrix)
        pts = list()
        p1 = points[m[0]]
        pts.append(p1)
        points.remove(p1)
        p2 = points[m[1] - 1]
        pts.append(p2)
        points.remove(p2)
        midpoint = newpoint(pts)
        points.append(midpoint)
        c1 = names.pop(str(p1))
        c2 = names.pop(str(p2))
        names[str(midpoint)] = "[" + str(c1) + str(c2) + "]"
        outline = names[str(midpoint)]

    print("Cluster is :", names[str(midpoint)])

Output:

Input number of points > 2
Input point (eg. 1,1) A > 1,2
Input point (eg. 1,1) B > 3,4
Distance matrix no.1:
[0.0, 2.83]
[2.83, 0.0]
Cluster is : [AB]